home *** CD-ROM | disk | FTP | other *** search
-
-
-
- GETOPT C Library Procedures GETOPT
-
-
-
- NNAAMMEE
- getopt - get option letter from argv
-
- SSYYNNOOPPSSIISS
- iinntt ggeettoopptt((aarrggcc,, aarrggvv,, ooppttssttrriinngg))
- iinntt aarrggcc;;
- cchhaarr ****aarrggvv;;
- cchhaarr **ooppttssttrriinngg;;
-
- eexxtteerrnn cchhaarr **ooppttaarrgg;;
- eexxtteerrnn iinntt ooppttiinndd;;
- eexxtteerrnn iinntt oopptteerrrr;;
-
- DDEESSCCRRIIPPTTIIOONN
- _G_e_t_o_p_t returns the next option letter in _a_r_g_v that matches a
- letter in _o_p_t_s_t_r_i_n_g. _O_p_t_s_t_r_i_n_g is a string of recognized
- option letters; if a letter is followed by a colon, the
- option is expected to have an argument that may or may not
- be separated from it by white space. _O_p_t_a_r_g is set to point
- to the start of the option argument on return from _g_e_t_o_p_t.
-
- _G_e_t_o_p_t places in _o_p_t_i_n_d the _a_r_g_v index of the next argument
- to be processed. Because _o_p_t_i_n_d is external, it is normally
- initialized to zero automatically before the first call to
- _g_e_t_o_p_t.
-
- When all options have been processed (i.e., up to the first
- non-option argument), _g_e_t_o_p_t returns EEOOFF. The special
- option ---- may be used to delimit the end of the options; EEOOFF
- will be returned, and ---- will be skipped.
-
- DDIIAAGGNNOOSSTTIICCSS
- _G_e_t_o_p_t prints an error message on _s_t_d_e_r_r and returns a ques-
- tion mark (??) when it encounters an option letter not
- included in _o_p_t_s_t_r_i_n_g. Setting _o_p_t_e_r_r to a zero will dis-
- able this error message.
-
- EEXXAAMMPPLLEE
- The following code fragment shows how one might process the
- arguments for a command that can take the mutually exclusive
- options aa and bb, and the options ff and oo, both of which
- require arguments:
-
- main(argc, argv)
- int argc;
- char **argv;
- {
- int c;
- extern int optind;
- extern char *optarg;
- .
- .
-
-
-
- Sprite v1.0 May 6, 1988 1
-
-
-
-
-
-
- GETOPT C Library Procedures GETOPT
-
-
-
- .
- while ((c = getopt(argc, argv, "abf:o:")) != EOF)
- switch (c) {
- case `a':
- if (bflg)
- errflg++;
- else
- aflg++;
- break;
- case `b':
- if (aflg)
- errflg++;
- else
- bproc();
- break;
- case `f':
- ifile = optarg;
- break;
- case `o':
- ofile = optarg;
- break;
- case `?':
- default:
- errflg++;
- break;
- }
- if (errflg) {
- fprintf(stderr, "Usage: ...");
- exit(2);
- }
- for (; optind < argc; optind++) {
- .
- .
- .
- }
- .
- .
- .
- }
-
- HHIISSTTOORRYY
- Written by Henry Spencer, working from a Bell Labs manual
- page. Modified by Keith Bostic to behave more like the Sys-
- tem V version.
-
- BBUUGGSS
- ``-'' may be specified as an option letter, however it
- should never have an argument associated with it. This
- allows getopt to be used with programs that think that ``-''
- means standard input.
-
- Option arguments are allowed to begin with ``-''; this is
-
-
-
- Sprite v1.0 May 6, 1988 2
-
-
-
-
-
-
- GETOPT C Library Procedures GETOPT
-
-
-
- reasonable but reduces the amount of error checking possi-
- ble.
-
- _G_e_t_o_p_t is quite flexible but the obvious price must be paid:
- there is much it could do that it doesn't, like checking
- mutually exclusive options, checking type of option argu-
- ments, etc.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Sprite v1.0 May 6, 1988 3
-
-
-
-